package com.AdvancedDemos.LearnVariousAPI.时间日期类.JDK8新时间日期类;

import java.time.Instant;

public class LearnInstant {
    public static void main(String[] args) {
        /**
         * Instant指时间线上的某个时刻/时间戳 用于替代Date类
         * 通过Instant的对象可以拿到此刻的时间,该时间由两部分组成:
         * 从1970-01-01 00:00:00 开始走到此刻的总秒数 + 不够一秒的纳秒数
         *
         * Instant精确到了纳秒级
         * 1秒 = 1000毫秒
         * 1毫秒 = 1000微秒
         * 1微秒 = 1000纳秒
         * 1秒 = 1000 000 000纳秒
         */

        /**
         * public static Instant now() --- 获取当前时间的Instant对象(标准时间)
         * public long getEpochSecond() --- 获取从1970-01-01T00:00:00开始记录的秒数
         * public int getNano() --- 获取不足一秒的纳秒数
         * plusMillis plusSeconds plusNanos --- 增加时间系列的方法
         * minusMillis minusSeconds minusNanos --- 减少时间系列的方法
         * equals isBefore isAfter --- 判断系列方法
         */

//        epoch n.纪元,时代

        Instant now = Instant.now();
        System.out.println(now);//直接输出Instant对象
        long epochSecond = now.getEpochSecond();
        System.out.println(epochSecond);//输出秒数
        int nano = now.getNano();
        System.out.println(nano);//输出纳秒数

        Instant instant = now.plusNanos(100);//加100纳秒
        System.out.println(instant.getNano());
        System.out.println(instant.plusSeconds(1).getEpochSecond());//加1秒
        System.out.println(instant.minusMillis(2000).getEpochSecond());//减2000毫秒

        System.out.println(instant.isBefore(now));
        System.out.println(instant.isAfter(now));
        System.out.println(instant.equals(now));

        /**
         * Instant对象的作用:
         * 做代码的性能分析,或者记录用户操作的时间点
         * Instant i1 = Instant.now();
         *          执行代码
         * Instant i2 = Instant.now();
         *
         *
         * Instant中的epochSecond是从1970-1-1 0:0:0 开始计算的秒数,而
         * LocalDateTime中getSecond()得到的是不足一分钟的部分中的秒数,不足一秒,纳入纳秒
         */
    }
}
